package cn.com.api.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import cn.com.api.entity.ApiType;
import cn.com.util.*;

public interface ApiTypeMapper {

	// 数据集
	public List<ApiType> findTypes();

	// 根据id查看
	public ApiType findTypeById(@Param("c_code") Integer c_code);

	// 添加
	public void insertType(ApiType type);

	// 添加
	public void insertType4erp(ApiType type);

	// 修改
	public void updateType(ApiType type);

	// 删除
	public int deleteType(@Param("c_code") Integer c_code);

	List<ApiType> getApiTypeListPage(@Param("page") PageInfo page);

	List<Map<String, Object>> getGoodsType(Object cBelong);

	public Map<String, Object> searShengXian();

	public List<ApiType> getTypesByCBelong(@Param("cBelong") Integer cBelong);

	// 根级分类 -传0
	public List<ApiType> getTypesByCGrade(Integer cGrade);

	// 获取系统三级分类
	public List<ApiType> getThirdTypes();

	// 获取系统二级分类
	public List<ApiType> getSecondTypes();

	// 获取系统一级分类
	public List<ApiType> getFirstTypes();

	// 根据模块查询
	public List<ApiType> findTypesByCmod(String c_mod);

	// 商家分类列表
	public List<ApiType> findTypes4Shops();

	// 查询二级菜单
	public List<ApiType> gettwoType(@Param("c_id") Integer c_id);

	// 查询三级菜单
	public List<ApiType> getthreeType(@Param("c_id") Integer c_id);

	// 查询商家的商品分类
	public List<ApiType> getTypesByShopId(@Param("c_sid") Integer c_sid);

	// 根据商品类型获取商品总数
	public int getGoodsCountByTypeId(@Param("type_id") Integer type_id);

	// 根据belong查询对应code
	public List<ApiType> bybelong(Integer c_belong);

	// 根据belong查询对应code
	public List<ApiType> byParent(@Param("parent") Integer parent);

	// 根据cName查找非自营
	public List<ApiType> bycnamefzyListPage(
			@Param("conditions") Map<String, Object> conditions,
			@Param("page") PageInfo pageInfo);

	// 根据cName查找自营
	public List<ApiType> bycnamezyListPage(
			@Param("conditions") Map<String, Object> conditions,
			@Param("page") PageInfo pageInfo);

	// 获取一个分类的上一级分类
	public Integer getParentTypeByType(@Param("c_code") Integer c_code);

	// 获取非自营一级品类
	public List<ApiType> getBigTypes();

	// 获取自营一级品类
	public List<ApiType> getBigTypesZiYing();

	// 获取非自营品类
	public List<ApiType> getTypes();

	// 获取自营品类
	public List<ApiType> getTypesZiYing();

	// 非自营分页
	public List<ApiType> getfeizyListPage(@Param("page") PageInfo pageInfo);

	// 自营分页
	public List<ApiType> getzyListPage(@Param("page") PageInfo pageInfo);

	/**
	 * 得到不同级别的分类
	 * 
	 * @param isZiYing
	 * @param level
	 *            第几级 1,2,3
	 * @return
	 */
	public List<ApiType> getLevelTypes(@Param("isZiYing") boolean isZiYing,
			@Param("level") int level);

	/**
	 * 根据父类别的 id得到子分类的id集合
	 * 
	 * @param parentId
	 * @param isZiYing
	 *            是否是自营
	 * @return
	 */
	public List<Integer> getSubTypeIds(@Param("parentId") int parentId,
			@Param("isZiYing") boolean isZiYing);
}